package cz.cvut.fel.restauracefel.server.server;
import cz.cvut.fel.restauracefel.library.service.ConfigParser;
import java.net.UnknownHostException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.logging.Level;
import cz.cvut.fel.restauracefel.server.logger.ServerLogger;
import cz.cvut.fel.restauracefel.service.ServiceFacadeAll;
import cz.cvut.fel.restauracefel.pokladna_service.ServiceFacadeCash;
import cz.cvut.fel.restauracefel.manager_service.ServiceFacadeManager;
import cz.cvut.fel.restauracefel.sklad_service.ServiceFacadeStorage;
import cz.cvut.fel.restauracefel.service.ServiceFacadePDA;
import cz.cvut.fel.restauracefel.smeny_service.ServiceFacadeSmeny;
import java.net.InetAddress;
/**
*
* @author Jarda
*/
public class Main {
public static void main(String[] args) {
ServerLogger log = ServerLogger.getInstance();
//inicializace Java RMI
try {
log.writeLogMessage(Level.INFO, "Server spusten");
ServiceFacadeAll facadeAll = ServiceFacadeAll.getInstance();
ServiceFacadeManager facadeManager = ServiceFacadeManager.getInstance();
ServiceFacadeStorage facadeStorage = ServiceFacadeStorage.getInstance();
ServiceFacadeCash facadeCash = ServiceFacadeCash.getInstance();
ServiceFacadePDA facadePDA = ServiceFacadePDA.getInstance();
ServiceFacadeSmeny facadeSmeny = ServiceFacadeSmeny.getInstance();
//Vsechny fasady jsou registrovany a pristupny pres port 1099 (jmenna sluzba)
ConfigParser config = new ConfigParser();
InetAddress inetAddress = InetAddress.getByName(config.getServerIP());
Registry reg = LocateRegistry.createRegistry(1099, null, new AnchorSocketFactory(inetAddress));
//Registry reg = LocateRegistry.createRegistry(1099);
facadeAll.initServiceFacadeRMI(reg);
facadeManager.initServiceFacadeRMI(reg);
facadeStorage.initServiceFacadeRMI(reg);
facadeCash.initServiceFacadeRMI(reg);
facadePDA.initServiceFacadeRMI(reg);
facadeSmeny.initServiceFacadeRMI(reg);
} catch (RemoteException re) {
log.writeThrowingException("ServiceFacadeAll", "getInstance", re);
log.writeThrowingException("ServiceFacadeManager", "getInstance", re);
log.writeThrowingException("ServiceFacadeStorage", "getInstance", re);
log.writeThrowingException("ServiceFacadeCash", "getInstance", re);
log.writeThrowingException("ServiceFacadePDA", "getInstance", re);
log.writeThrowingException("ServiceFacadeAll", "initServiceFacadeRMI", re);
log.writeThrowingException("ServiceFacadeManager", "initServiceFacadeRMI", re);
log.writeThrowingException("ServiceFacadeStorage", "initServiceFacadeRMI", re);
log.writeThrowingException("ServiceFacadeCash", "initServiceFacadeRMI", re);
log.writeThrowingException("ServiceFacadePDA", "initServiceFacadeRMI", re);
log.writeThrowingException("ServiceFacadeSmeny", "initServiceFacadeSmeny", re);
System.exit(-1);
} catch (UnknownHostException uhe){
log.writeThrowingException("ServiceFacadeAll", "getInstance", uhe);
log.writeThrowingException("ServiceFacadeManager", "getInstance", uhe);
log.writeThrowingException("ServiceFacadeStorage", "getInstance", uhe);
log.writeThrowingException("ServiceFacadeCash", "getInstance", uhe);
log.writeThrowingException("ServiceFacadePDA", "getInstance", uhe);
log.writeThrowingException("ServiceFacadeAll", "initServiceFacadeRMI", uhe);
log.writeThrowingException("ServiceFacadeManager", "initServiceFacadeRMI", uhe);
log.writeThrowingException("ServiceFacadeStorage", "initServiceFacadeRMI", uhe);
log.writeThrowingException("ServiceFacadeCash", "initServiceFacadeRMI", uhe);
log.writeThrowingException("ServiceFacadePDA", "initServiceFacadeRMI", uhe);
log.writeThrowingException("ServiceFacadeSmeny", "initServiceFacadeSmeny", uhe);
System.exit(-1);
} catch (Exception ex){
log.writeThrowingException("ServiceFacadeAll", "getInstance", ex);
log.writeThrowingException("ServiceFacadeManager", "getInstance", ex);
log.writeThrowingException("ServiceFacadeStorage", "getInstance", ex);
log.writeThrowingException("ServiceFacadeCash", "getInstance", ex);
log.writeThrowingException("ServiceFacadePDA", "getInstance", ex);
log.writeThrowingException("ServiceFacadeAll", "initServiceFacadeRMI", ex);
log.writeThrowingException("ServiceFacadeManager", "initServiceFacadeRMI", ex);
log.writeThrowingException("ServiceFacadeStorage", "initServiceFacadeRMI", ex);
log.writeThrowingException("ServiceFacadeCash", "initServiceFacadeRMI", ex);
log.writeThrowingException("ServiceFacadePDA", "initServiceFacadeRMI", ex);
log.writeThrowingException("ServiceFacadeSmeny", "initServiceFacadeSmeny", ex);
ex.printStackTrace();
System.exit(-1);
}
}
}